home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 6 / c_math.zip / FREXP.C < prev    next >
Text File  |  1983-07-02  |  508b  |  38 lines

  1. /* @(#)frexp.c    4.1 (Berkeley) 12/21/80 */
  2. /*
  3.     the call
  4.         x = frexp(arg,&exp);
  5.     must return a double fp quantity x which is <1.0
  6.     and the corresponding binary exponent "exp".
  7.     such that
  8.         arg = x*2^exp
  9. */
  10.  
  11. double
  12. frexp(x,i)
  13. double x;
  14. int *i;
  15. {
  16.     int neg;
  17.     int j;
  18.     j = 0;
  19.     neg = 0;
  20.     if(x<0){
  21.         x = -x;
  22.         neg = 1;
  23.         }
  24.     if(x>1.0)
  25.         while(x>1){
  26.             j = j+1;
  27.             x = x/2;
  28.             }
  29.     else if(x<0.5)
  30.         while(x<0.5){
  31.             j = j-1;
  32.             x = 2*x;
  33.             }
  34.     *i = j;
  35.     if(neg) x = -x;
  36.     return(x);
  37.     }
  38.